﻿#region 基本信息

/*
 * 作者：王玉才 (Wang Yucai)
 * 创建日期：2015-03-06 10:17:29
 * 电子邮件：SourceProStudio@outlook.com 或者 MasterDuner@yeah.net
 * 开发工具：Microsoft VisualStudio 2013 Ultimate Edition
 * 
 * 公共语言运行时(CLR)版本：4.0.30319.18444
 * 适用的.NET Framework SDK版本：4.0及其以上版本
 * 
 * 机器名：GLCHQWYCWINW7
 * 用户名：GUOCOLAND\wangyucai
 */

#endregion


using System;


namespace DeluxeSources.Practices.Models
{
    /// <summary>
    /// <para>
    /// 动态数据源实体条目。
    /// </para>
    /// <para>
    /// 命名空间：<see cref="DeluxeSources.Practices.Models"/>
    /// </para>
    /// <para>
    /// 类型名称：<see cref="DynamicItem"/>
    /// </para>
    /// <para>
    /// 此类型(<see cref="DynamicItem"/>)仅适用于4.0及其以上版本的.NET Framework SDK。
    /// </para>
    /// <para>
    /// 此类型是密闭的，不可以从此类型继承。
    /// </para>
    /// <para>
    /// © 2015 Wang Yucai.
    /// </para>
    /// </summary>
    /// <remarks>
    /// 此类型是密闭的，不可以从此类型继承。
    /// </remarks>
    public sealed class DynamicItem
    {
        private double _randomNumber;
        private string _randomHexExpression;
        private string _hashCodeHexExpression;

        #region RandomNumber
        /// <summary>
        /// 设置或获取随机数字。
        /// </summary>
        public double RandomNumber
        {
            get { return _randomNumber; }
            set { _randomNumber = value; }
        }
        #endregion

        #region RandomHexExpression
        /// <summary>
        /// 设置或获取随机数字的十六进制表达式。
        /// </summary>
        public string RandomHexExpression
        {
            get { return _randomHexExpression; }
            set { _randomHexExpression = value; }
        }
        #endregion

        #region HashCodeHexExpression
        /// <summary>
        /// 设置或获取随机哈希码十六进制表达式。
        /// </summary>
        public string HashCodeHexExpression
        {
            get { return _hashCodeHexExpression; }
            set { _hashCodeHexExpression = value; }
        }
        #endregion

        #region 构造函数

        /// <summary>
        /// <para>
        /// <see cref="DynamicItem"/>的构造函数：
        /// </para>
        /// <para>
        /// 用于初始化一个<see cref="DynamicItem"/>类型的对象实例。
        /// </para>
        /// <para>
        /// 此类型是密闭的，不可以从此类型继承。
        /// </para>
        /// </summary>
        public DynamicItem()
        {
        }

        #endregion

        #region CreateRandomSeed
        /// <summary>
        /// 创建一个基础随机数。
        /// </summary>
        /// <returns><see cref="double"/>值。</returns>
        static private double CreateRandomSeed()
        {
            return new Random().NextDouble();
        }
        #endregion

        #region CreateRandomMultipleSeed
        /// <summary>
        /// 创建一个基础随机倍数。
        /// </summary>
        /// <returns><see cref="int"/>值。</returns>
        static private int CreateRandomMultipleSeed()
        {
            return new Random().Next(10000);
        }
        #endregion

        #region CreateInstance
        /// <summary>
        /// 创建一个<see cref="DynamicItem"/>对象实例。
        /// </summary>
        /// <returns><see cref="DynamicItem"/>对象实例。</returns>
        static public DynamicItem CreateInstance()
        {
            double random = DynamicItem.CreateRandomSeed() * DynamicItem.CreateRandomMultipleSeed();
            return new DynamicItem()
            {
                RandomNumber = random,
                RandomHexExpression = random.ToString(),
                HashCodeHexExpression = random.GetHashCode().ToString("X")
            };
        }
        #endregion
    }
}

#region 版权声明

/*
 * Copyright © 2015 Wang Yucai. All rights reserved.
 */

#endregion